"use strict";

const Controller = require("egg").Controller;

class HomeController extends Controller {
    async index() {
        const { ctx } = this;
        ctx.body = "Hi, egg ~";
    }

    async login() {
        // 获取参数
        const { mobile, code } = this.ctx.request.body;
        // 非空校验
        // 查询验证码表
        const codeObj = await this.service.code.findByMobile(mobile);
        // 不存在，去获取验证码
        if (!codeObj) {
            this.ctx.body = {
                code: 400,
                message: "请先获取验证码",
            };
            return;
        }
        // 比对验证码
        if (codeObj.code !== code) {
            this.ctx.body = {
                code: 400,
                message: "验证码不正确",
            };
            return;
        }
        // 查询用户是否存在
        let user = await this.service.user.findByMobile(mobile);
        // 用户不存在，自动注册
        if (!user) {
            await this.service.user.add(mobile, mobile);
            // 再差一次，为了和下面的登录流程一致
            user = await this.service.user.findByMobile(mobile);
        }
        // 登录
        const token = this.ctx.helper.genToken({ ...user });
        // 返回响应
        this.ctx.body = {
            code: 200,
            data: {
                token,
                user,
            },
            message: "登录成功",
        };
    }
}

module.exports = HomeController;
